package org.jeecg.modules.paycenter.channel.zxbank.dto;

import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.apache.commons.lang.StringUtils;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import java.math.BigDecimal;

@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@XmlAccessorType(XmlAccessType.FIELD)
public class BaseUserData {
    //交易序号 int(5)，要求该字段为纯数字，且从1开始自增
    @XmlElement
    private Integer ID;
    //收款账号
    @XmlElement
    private String recAccountNo;
    //收款账户名称
    @XmlElement
    private String recAccountName;
    //收款账户开户行号varchar(12)，收方账户非银联卡时必输，取值为支付联行号，值域可通过 [4.2支付联行信息查询]接口查询；若收款账户为银联卡时可空
    @XmlElement
    private String recBankCode;
    //金额
    @XmlElement
    private BigDecimal tranAmount;
    //附言 varchar(64) ，建议长度34字符（不区分中英文），超过34个字符时，通过“账户明细信息查询DLTRNALL”返回该字段超长部分可能会被截取
    @XmlElement(name = "abstract")
    private String Abstract;
    @XmlElement
    private String field1;
    @XmlElement
    private String field2;
    @XmlElement
    private String field3;

    /** 交易状态
     * A0	等待审核
     * A1	审核拒绝
     * A2	审核中
     * A3	已撤销
     * A4	终审成功
     * B0	银行处理中
     * B1	批量请求失败
     * B2	批量请求成功
     * D1	明细全部失败
     * D2	明细全部成功
     * D3	明细部分成功
     * S0	银行处理中
     * S1	收款失败
     * S2	收款成功
     */
    @XmlElement
    private String stt;
    //交易状态信息
    @XmlElement
    private String sttText;
    //交易状态
    @XmlElement
    private String status;
    //交易状态信息
    @XmlElement
    private String statusText;

    //支付成功
    public boolean isSTTSuccess(){
        return "S2".equals(this.stt);
    }
    //支付失败
    public boolean isSTTFail(){
        return "S1".equals(this.stt);
    }
    public String getInfo(){
        String tstatus = StringUtils.isEmpty(this.getStatus()) ? "" : "," + this.getStatus();
        String tstatusText = StringUtils.isEmpty(this.getStatusText()) ? "" : "," + this.getStatusText();
        return String.format("%s,%s%s%s",this.getStt() , this.getSttText() , tstatus , tstatusText);
    }



    //账号
    @XmlElement
    private String accountNo;
    //账户名称
    @XmlElement
    private String accountName;
    //币种
    @XmlElement
    private String currencyID;
    //开户行名称
    @XmlElement
    private String openBankName;
    //最近交易日
    @XmlElement
    private String lastTranDate;
    //可用账户余额
    @XmlElement
    private BigDecimal usableBalance;
    //账号余额
    @XmlElement
    private BigDecimal balance;
    //冻结（或看管）金额
    @XmlElement
    private BigDecimal forzenAmt;
    //账号状态char(1)， A：正常；D:睡眠；F:冻结，仅当查询账号为信银国际账号时返回
    @XmlElement
    private String frozenFlag;
    //账户类型 char(2)，ST:活期储蓄；IM:活期支票，仅当查询账号为信银国际账号时返回
    @XmlElement
    private String accountType;
    //法透额度decimal(15,2)，仅当查询账号为信银国际账号时返回
    @XmlElement
    private BigDecimal lawptLmt;


    //回单编号
    @XmlElement(name = "brSeqNo")
    private String brSeqNo;
    //回单类型varchar (6)，100000：存款回单；100001：取款回单；200000：转账回单；200001：缴税回单；300000：收费回单；400000定期回单；400001：活期回单
    @XmlElement
    private String billType;


    @XmlElement(name = "brseqNo")
    private String brseqNo2;
    @XmlElement
    private String otherRaccNm1;
    @XmlElement
    private String otherRaccNo1;
    @XmlElement
    private BigDecimal tranAmt;


}
